package com.bangcommunity.bbframe.http.converter;/// *

// * Copyright (c) 2013-2014, thinkjoy Inc. All Rights Reserved.
// *
// * Project Name: samples
// * $$Id: ExtGsonConverter.java 14-11-25 上午9:22 $$
// */
//
// package com.bangcommunity.im.wxapp.biz.client.converter;
//
// import java.io.ByteArrayOutputStream;
// import java.io.IOException;
// import java.io.InputStream;
// import java.io.InputStreamReader;
// import java.io.OutputStream;
// import java.io.UnsupportedEncodingException;
// import java.lang.reflect.Type;
//
// import com.alibaba.fastjson.JSON;
// import retrofit2.Converter;
//
/// **
// */
// public class FastJSONConverter implements Converter.Factory {
// public static class FastJSONConverterBuild{
// private static final FastJSONConverter instance = new FastJSONConverter();
// }
//
// public static FastJSONConverter getInstance(){
// return FastJSONConverterBuild.instance;
// }
//
// private String charset;
//
// /**
// * Encoding to JSON and
// * decoding from JSON (when no charset is specified by a header) will use UTF-8.
// */
// public FastJSONConverter() {
// this("UTF-8");
// }
//
// /**
// * Encoding to JSON and
// * decoding from JSON (when no charset is specified by a header) will use the specified charset.
// */
// public FastJSONConverter(String charset) {
// this.charset = charset;
// }
//
// @Override
// public Object fromBody(TypedInput body, Type type) throws ConversionException {
// String charset = this.charset;
// if (body.mimeType() != null) {
// charset = MimeUtil.parseCharset(body.mimeType(), charset);
// }
// InputStreamReader isr = null;
// try {
// isr = new InputStreamReader(body.in(), charset);
//
// ByteArrayOutputStream baos = new ByteArrayOutputStream();
// InputStream in = body.in();
// byte[] buf = new byte[1024];
// for (;;) {
// int len = in.read(buf);
// if (len == -1) {
// break;
// }
//
// if (len > 0) {
// baos.write(buf, 0, len);
// }
// }
//
// byte[] bytes = baos.toByteArray();
//
//
// return JSON.parseObject(bytes, type); //gson.fromJson(isr, type1);
// } catch (IOException e) {
// throw new ConversionException(e);
// } finally {
// if (isr != null) {
// try {
// isr.close();
// } catch (IOException ignored) {
// }
// }
// }
// }
//
// @Override
// public TypedOutput toBody(Object object) {
// try {
// return new JsonTypedOutput(JSON.toJSONString(object).getBytes(charset), charset);
// } catch (UnsupportedEncodingException e) {
// throw new AssertionError(e);
// }
// }
//
// private static class JsonTypedOutput implements TypedOutput {
// private final byte[] jsonBytes;
// private final String mimeType;
//
// JsonTypedOutput(byte[] jsonBytes, String encode) {
// this.jsonBytes = jsonBytes;
// this.mimeType = "application/json; charset=" + encode;
// }
//
// @Override
// public String fileName() {
// return null;
// }
//
// @Override
// public String mimeType() {
// return mimeType;
// }
//
// @Override
// public long length() {
// return jsonBytes.length;
// }
//
// @Override
// public void writeTo(OutputStream out) throws IOException {
// out.write(jsonBytes);
// }
// }
// }
